/**
 * 
 */
package com.kingcore.pda.core.bean;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

/**
 * @author Zeven
 *
 */
public class SmartCodeStyle implements CodeStyle {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		CodeStyle cs = new SmartCodeStyle();
		System.out.println(cs.formatObjectName("user_name"));
		System.out.println(cs.formatClassName("user_name"));

	}

	public String formatClassName(String name) {
		name = formatObjectName(name);
		return StringUtils.capitalize(name);
	}

	private static Pattern pattern = Pattern.compile("(_[a-z]{1})");
	/**
	 * 将数据库的列明格式为Bean的属性名，可以根据自己的规则over write本方法。
	 *    比如数据库列名 user_name -->属性名 userName
	 *                user_name -->属性名 user_name
	 * @param objLabel
	 * @return
	 */
	public String formatObjectName(String objLabel) {
		if (objLabel==null) {
			return null;
		}
		objLabel = objLabel.toLowerCase();
		StringBuffer sbf = new StringBuffer();
        Matcher matcher = pattern.matcher( objLabel );
        while(matcher.find()){
        	String replacement = matcher.group(1).substring(1).toUpperCase();
            matcher.appendReplacement(sbf, replacement);
        }
        matcher.appendTail(sbf);
		return sbf.toString();
	}

}
